﻿using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace XNA_TD
{
    public abstract class IRunable
    {
        public static GameManager gameManager;
        public static Map map;
        public static GameTime gameTime;
        public static Int64 inGameTime = 0;
        public static GraphicsDeviceManager graphics;
        public static SpriteBatch spriteBatch;
        public static ContentManager Content;
        public static Pfad pfad;
        public static Kamera kamera;
        public static ButtonPressed buttonPressed;

        public static Matrix viewMatrix;
        public static Matrix projectionMatrix;
        public static int gameSpeed = 0;
        public static Schwierigkeit schwierigkeit;
        public Priority priority { get; private set; }
        public static int geld = 0;
        public static Terrain terrain;
        public static Base baseTower;
        public static Effect shader = null;

        public static Matrix lightViewMatrix, lightProjectionMatrix, lightWorldMatrix;

        public IRunable(Priority pri)
        {
            priority = pri;
        }

        public static void Register(IRunable runable)
        {
            gameManager.Register(runable);
        }

        public static void UnRegister(IRunable runable)
        {
            gameManager.UnRegister(runable);
        }

        public abstract void Load();
        public abstract void UnLoad();
    }
}
